package cc.rengu.igas.share.facade.bean.cups;

import cc.rengu.oltp.service.common.enums.OltpRpcdEnum;
import cc.rengu.oltp.service.model.BizException;

import java.util.Arrays;

/**
 * 域 70 网络管理信息码
 * <p>
 * 网络管理功能码，用于区别报文类型码和报文格式均相同而实际功能不同的几种报文。
 *
 * @author fangminwei
 * @date 2021/4/17
 */
@SuppressWarnings("AlibabaEnumConstantsMustHaveComment")
public enum F70_NetMngInfCodeEnum {
    _001("001", "机构签到/打开机构（即同一机构标识码作为33域发送机构和100域接收机构同时被打开）"),
    _002("002", "机构签退/关闭机构（即同一机构标识码机构作为33域发送机构和100域接收机构同时被关闭）"),
    _003("003", "发送机构签到/打开发送机构（即机构标识码作为33域发送机构被打开）"),
    _004("004", "发送机构签退/关闭发送机构（即机构标识码作为33域发送机构被关闭）"),
    _005("005", "接收机构签到/打开接收机构（即机构标识码作为100域接收机构被打开）"),
    _006("006", "接收机构签退/关闭接收机构（即机构标识码作为100域接收机构被关闭）"),
    _201("201", "CUPS开始日期切换"),
    _202("202", "CUPS终止日期切换"),
    _301("301", "线路测试"),
    _951("951", "基于UICS借/贷记卡标准的IC卡借贷记应用和电子现金应用的脚本处理结果通知"),
    _802("802", "可疑欺诈交易通知"),
    _803("803", "吞卡通知"),
    _804("804", "转账结果通知"),
    //    _101("101","入网机构申请重置密钥"),
    _101("101", "CUPS重置密钥"),
    _401("401", "代授权状态检测"),
    _501("501", "代授权联机传输启动"),
    _502("502", "代授权联机传输结束/停止。在银联系统发送报文中表示传输结束；而在机构发送报文中表示中断停止"),
    ;

    private String code;
    private String desc;

    F70_NetMngInfCodeEnum(String code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    public String getCode() {
        return code;
    }

    public String getDesc() {
        return desc;
    }

    @Override
    public String toString() {
        return code + "-" + desc;
    }

    public static F70_NetMngInfCodeEnum find(String code) {
        F70_NetMngInfCodeEnum result = Arrays.stream(F70_NetMngInfCodeEnum.values())
                .filter(e -> e.getCode().equals(code)).findFirst().orElse(null);

        if (result == null) {
            throw new BizException(OltpRpcdEnum.PARAM_IS_EMPTY_OR_NULL.getRespCode(), "找不到对应的枚举信息" + code);
        }
        return result;
    }
}
